package Client;

import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.ArrayList;

import javax.swing.JButton;

import Client.GUI.SpielfeldGUI;
import Commons.Karte;
import Commons.Spieler;
import Commons.Spielzustand;

/**
 * 
 * @author Alex
 *
 */

public class VerbindungsAufbauClient {
	

	public ObjectOutputStream output;
	ArrayList<Karte> vierzehnSpieler1 = new ArrayList<>();
	ArrayList<Karte> vierzehnSpieler2 = new ArrayList<>();
	String Username;

	public VerbindungsAufbauClient() {
	}

	public void connect(int port, String Username) throws IOException, ClassNotFoundException {
		Socket socket = new Socket("localhost", port);
		output = new ObjectOutputStream(socket.getOutputStream());
		
		/**
		 * line 263 has to be activated if you want to play on 2 different notebooks and line 257 must be deactivated
		 */
//		public void connect(int port, String Username, String ipadresse) throws IOException, ClassNotFoundException {
//			Socket socket = new Socket(ipadresse, port);
//			output = new ObjectOutputStream(socket.getOutputStream());
		
		Spieler spieler = new Spieler(Username, false, false, false, vierzehnSpieler1, vierzehnSpieler2, null, null);
		
		//spieler.setSpielername(Username);
		//spielzustand.setSpieler(spieler); 
		ServerSchicken(spieler);
		//SpielfeldGUI.setSpielzustand(spielzustand);
		this.Username = Username;
		ServerListener serverlistener = new ServerListener(this, socket, Username);
		serverlistener.start();
	}
	
	public void ServerSchicken(Spieler spieler) throws IOException {
		
		System.out.println("vor output -- Spieler spielen methode");
		output.writeObject(spieler);
		output.reset();
		System.out.println("message-sent-client: "+spieler);
		System.out.println("danach output...");
	}
	
	public void ServerSchicken(Spielzustand spielzustand) throws IOException {
		try {
			System.out.println("vor output -- Spielzustand Spielen methode");
		
		System.out.println("Client sendet: Spieler1:"+spielzustand.getSpieler(0).isGegnerHatGespielt()+"; Spieler2:"+spielzustand.getSpieler(1).isGegnerHatGespielt());
		output.writeObject(spielzustand);
		System.out.println("Geschickt");
		output.reset();
		} catch (Exception e) {
			System.out.println(spielzustand);
			e.printStackTrace();
		}
		
		System.out.println("message-sent-client: "+spielzustand);
		System.out.println("danach output...");
	}

	public String getUsername() {
		return Username;
	}

	public void setUsername(String Username) {
		this.Username = Username;
	}
	
	

}
